from langchain.embeddings import CacheBackedEmbeddings
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_community.storage import RedisStore

# Step 1: 设置你的 Embedding 模型
embedding_model = DashScopeEmbeddings(
    model="text-embedding-v2",
    max_retries=3,
    dashscope_api_key="sk-xxxxxxxx",
)
# Step 2: 设置 Redis 存储后端（带密码）
redis_store = RedisStore(
    redis_url="redis://:password@ip:6379/0",
    ttl=3600,
    # 替换为你自己的 Redis 地址和密码
)
cached_embeddings = CacheBackedEmbeddings.from_bytes_store(
    embedding_model,
    redis_store,
    namespace="open-ai-v5",  # 可选命名空间，用于隔离不同的模型或用途
)
texts = ["如何重置密码", "如何重置密码"]  # 故意重复
# 首次调用（写入缓存）
vector1 = cached_embeddings.embed_documents(texts)
# 二次调用（读取缓存）
vector2 = cached_embeddings.embed_documents(texts)
print(f"结果一致性：{vector1 == vector2}")  # 输出True